LangGraph 是 LangChain 推出的用于构建有状态、多 Agent 应用的库。本文将带你从零开始学习 LangGraph,理解核心概念,并通过实际代码示例掌握如何构建 AI Agent 工作流。
目录
- 什么是 LangGraph?
- 核心概念详解
- 环境准备与安装
- [第一个 LangGraph 应用](#四第一个-langgraph 应用)
- 状态管理与记忆
- 条件分支与循环
- [多 Agent 协作](#七多-agent 协作)
- 实战:客服对话系统
- 调试与可视化
- 最佳实践与总结
一、什么是 LangGraph?
1.1 LangGraph 简介
LangGraph 是 LangChain 团队于 2024 年推出的开源库,专门用于构建有状态的、多 Agent 的工作流应用。它基于图(Graph)结构,让开发者可以直观地设计和控制 AI Agent 的执行流程。
1 | ┌─────────────────────────────────────────────────────────────┐ |
1.2 为什么需要 LangGraph?
传统的 LLM 应用开发面临以下挑战:
| 挑战 | 传统方案 | LangGraph 方案 |
|---|---|---|
| 状态管理 | 手动维护对话历史 | 内置 State 管理 |
| 复杂流程 | 大量 if-else 嵌套 | 图结构清晰表达 |
| 多 Agent 协作 | 难以协调 | 天然支持多节点 |
| 循环执行 | 容易死循环 | 可控的循环机制 |
| 调试困难 | 黑盒执行 | 可视化 + 断点 |
1.3 应用场景
- 🤖 智能客服系统:多轮对话、问题分类、工单流转
- 📊 数据分析助手:数据查询、分析、报告生成
- 📝 内容创作工作流:大纲生成、内容撰写、审核修改
- 🔍 研究助手:信息检索、总结、引用管理
- 💼 企业自动化:审批流程、任务分配、状态跟踪
二、核心概念详解
2.1 图(Graph)
LangGraph 的核心是有向图,由节点(Node)和边(Edge)组成:
1 | ┌─────────────────────────────────────────────────────────────┐ |
2.2 节点(Node)
节点是图中的执行单元,可以是:
- Python 函数:普通函数或异步函数
- Agent:LangChain Agent
- Tool:工具调用
- LLM 调用:直接调用大模型
1 | # 节点示例:一个简单的函数节点 |
2.3 边(Edge)
边定义节点之间的执行流向,分为:
- 普通边:无条件执行下一个节点
- 条件边:根据条件决定执行路径
1 | # 条件边示例 |
2.4 状态(State)
状态是贯穿整个工作流的数据容器,在所有节点间共享:
1 | from typing import TypedDict, List, Annotated |
2.5 Checkpoint(检查点)
Checkpoint 用于持久化状态,支持:
- 断点续传:从中断处继续执行
- 时间旅行:回滚到历史状态
- 并行执行:多个分支独立状态
1 | from langgraph.checkpoint import MemorySaver |
三、环境准备与安装
3.1 基础环境
1 | # 创建虚拟环境 |
3.2 安装依赖
1 | # 核心依赖 |
3.3 配置 API Key
1 | # 设置环境变量(推荐) |
3.4 验证安装
1 | # test_install.py |
四、第一个 LangGraph 应用
4.1 最简单的示例:问候机器人
让我们从最简单的例子开始,构建一个问候机器人:
1 | # 01_hello_bot.py |
4.2 运行示例
1 | python 01_hello_bot.py |
4.3 可视化执行流程
1 | ┌─────────┐ ┌─────────┐ ┌─────────┐ |
五、状态管理与记忆
5.1 状态累加器
在某些场景下,我们需要累加状态而不是覆盖,比如消息历史:
1 | # 02_state_accumulator.py |
5.2 多轮对话示例
1 | # 03_multi_turn_chat.py |
六、条件分支与循环
6.1 条件分支
根据状态决定执行路径:
1 | # 04_conditional_branch.py |
6.2 循环执行
LangGraph 支持可控的循环,通过条件边实现:
1 | # 05_loop_execution.py |
6.3 循环控制最佳实践
1 | # 防止无限循环的模式 |
七、多 Agent 协作
7.1 多 Agent 架构
LangGraph 的核心优势是支持多 Agent 协作:
1 | ┌─────────────────────────────────────────────────────────────┐ |
7.2 多 Agent 示例
1 | # 06_multi_agent.py |
7.3 Agent 间通信
1 | # Agent 间传递信息的模式 |
八、实战:客服对话系统
8.1 系统架构
让我们构建一个完整的客服对话系统:
1 | # 07_customer_service.py |
8.2 运行结果示例
1 | python 07_customer_service.py |
1 | ====================================================================== |
九、调试与可视化
9.1 启用调试模式
1 | # 08_debug_mode.py |
9.2 可视化图结构
1 | # 使用 LangGraph CLI 可视化 |
9.3 使用 Checkpoint 调试
1 | # 09_checkpoint_debug.py |
十、最佳实践与总结
10.1 设计原则
| 原则 | 说明 | 示例 |
|---|---|---|
| 单一职责 | 每个节点只做一件事 | 意图识别、回复生成、工单创建分开 |
| 状态明确 | 清晰定义 State 结构 | 使用 TypedDict 定义所有字段 |
| 可控循环 | 设置最大迭代次数 | max_iterations 保护 |
| 错误处理 | 每个节点都要处理异常 | try-except 包裹 |
| 可测试性 | 节点函数纯函数化 | 便于单元测试 |
10.2 常见陷阱
1 | # ❌ 错误:无限循环 |
10.3 性能优化
1 | # 1. 使用异步节点 |
10.4 学习资源
| 资源 | 链接 |
|---|---|
| LangGraph 官方文档 | https://langchain-ai.github.io/langgraph/ |
| LangChain 文档 | https://python.langchain.com/ |
| GitHub 仓库 | https://github.com/langchain-ai/langgraph |
| 示例代码 | https://github.com/langchain-ai/langgraph/tree/main/examples |
总结
本文介绍了 LangGraph 的核心概念和使用方法:
核心要点
- 图结构:节点 + 边 = 工作流
- 状态管理:TypedDict 定义,支持累加器
- 条件路由:根据状态决定执行路径
- 循环控制:设置最大迭代次数保护
- 多 Agent:天然支持多角色协作
- Checkpoint:持久化状态,支持断点续传
下一步
- 📚 阅读官方文档深入学习
- 🔧 尝试修改示例代码
- 🚀 构建自己的 Agent 工作流
- 💡 分享你的使用经验
本文基于 LangGraph 最新版本编写,如有更新请参考官方文档。
标签:#LangGraph #LangChain #AI Agent #工作流 #大模型
最后更新: 2026 年 3 月 23 日